home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 399_01 / minedmp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-03  |  16.9 KB  |  620 lines

  1. /*  ==================================================================    *
  2.  *                Editor mined                *
  3.  *            Command and character set mappings        *
  4.  *  ==================================================================    */
  5.  
  6. #include "mined.h"
  7.  
  8. #define iso_latin_1
  9.  
  10. #ifdef msdos
  11. #undef iso_latin_1
  12. #undef dec_sup
  13. #define pc_charset
  14. #endif
  15.  
  16. /*  ==================================================================    *
  17.  *            8 bit character constant stuff            *
  18.  *  ==================================================================    */
  19.  
  20. #ifdef pc_charset
  21. char TABdefault = 250;
  22. char SHIFT_MARK = 175;        /* Char indicating that line continues */
  23. uchar ring = 248;
  24. #else
  25. char TABdefault = '╖';
  26. char SHIFT_MARK = '╗';        /* Char indicating that line continues */
  27. uchar ring = '░';
  28. #endif
  29.  
  30. int
  31. idfchar (ch)
  32.   uchar ch;
  33. {
  34.   return ('0' <= ch && ch <= '9') ||
  35.      ('A' <= ch && ch <= 'Z') ||
  36.      ('a' <= ch && ch <= 'z') ||
  37. #ifdef pc_charset
  38.      ((uchar) '\200' <= ch && ch <= (uchar) '\232') ||
  39.      ((uchar) '\240' <= ch && ch <= (uchar) '\245') ||
  40.      ((uchar) '\340' <= ch && ch <= (uchar) '\353') ||
  41. #ifdef cp850
  42. /* Whoever wishes to include an automatic and complete (?!) handling 
  43.    of Microsoft's rotten codepage chaos, is invited to do so. */
  44.      ((uchar) '\265' <= ch && ch <= (uchar) '\267') ||
  45.      ((uchar) '\320' <= ch && ch <= (uchar) '\330') ||
  46.      (ch == (uchar) '\233') ||
  47.      (ch == (uchar) '\235') ||
  48.      (ch == (uchar) '\306') ||
  49.      (ch == (uchar) '\307') ||
  50.      (ch == (uchar) '\336') ||
  51.      (ch == (uchar) '\354') ||
  52.      (ch == (uchar) '\355') ||
  53. #endif
  54. #else
  55.      ((uchar) '\300' <= ch && ch != (uchar) '╫' && ch != (uchar) '≈') ||
  56.      (ch == (uchar) '╡') ||
  57. #endif
  58.      (ch == '_');
  59. }
  60.  
  61. /*  ==================================================================    *
  62.  *        MSDOS Video mode switching table            *
  63.  *  ==================================================================    */
  64.  
  65. struct {
  66.     int mode, cols, lins;
  67. } modetab [] =
  68. { /* list of available modes, unsorted, terminated by a '-1' mode */
  69.   /* the entries contain:
  70.     a video mode number (restriction to text modes preferable),
  71.     the numbers of columns and of lines which can be displayed 
  72.         in that mode if a font of height 16 is used */
  73.   {42, 100, 40},
  74.   {38, 80, 60},
  75.   {36, 132, 28},
  76.   {35, 132, 25},
  77.   {34, 132, 44},
  78.   { 3, 80, 25},
  79.   { 1, 40, 25},
  80.   {-1, 0, 0}
  81. };
  82.  
  83. /*  ==================================================================    *
  84.  *            Character set coding                *
  85.  *  ==================================================================    */
  86.  
  87. /*
  88.  * Determine a default diacritic character value for _readchar ().
  89.  * The characters are given literally except for the MSDOS version in order
  90.  * not to depend on the function of a character set translator.
  91.  * For all non-MSDOS platforms, ISO-Latin1 or the very similar 
  92.  * DEC-Supplemental are assumed.
  93.  * For MSDOS, characters for the "International Codepage" ("850") are 
  94.  * generated which includes the real letters (not all graphic and Greek 
  95.  * characters) of the old IBM codepage ("437") (which, by the way, some 
  96.  * time ago someone must have designed in an attack of mental sickness).
  97.  */
  98. uchar
  99. diacritic (c)
  100.   uchar c;
  101. {
  102.   /*    the following characters cannot be inserted by this function:
  103.     ⌐¬«║╝╜╛ (ISO-Latin-1) and MSDOS graphics characters */
  104.   switch (c) {
  105. #ifdef pc_charset
  106.     case 'C' : return 128;
  107.     case 'c' : return 135;
  108.     case 'N' : return 165;
  109.     case 'n' : return 164;
  110.     case 's' : return 225;
  111.     case '!' : return 173;
  112.     case '$' : return 189;
  113.     case '/' : return 189;
  114.     case 'l' : return 156;
  115.     case 'L' : return 156;
  116.     case 'Y' : return 190;
  117.     case '+' : return 241;
  118.     case '?' : return 168;
  119.     case '0' : return 248;
  120.     case '1' : return 251;
  121.     case '2' : return 253;
  122.     case '3' : return 252;
  123.     case '<' : return 174;
  124.     case '>' : return 175;
  125.     case ':' : return 246;
  126.     case 'x' : return 158;
  127.     case 'f' : return 159;
  128.     case 'D' : return 209;
  129.     case 'd' : return 208;
  130.     case 'P' : return 232;
  131.     case 'p' : return 231;
  132.     case 'i' : return 213;
  133.     case '|' : return 221;
  134.     case '&' : return 244;
  135.     case '\\' : return 170;
  136.     case '_' : return 238;
  137.     case '-' : return 196;
  138.     case 'm' : return 230;
  139.     case '=' : return 242;
  140.     case '#' : return 245;
  141.     case '.' : return 250;
  142.     case ',' : return 247;
  143.     case '\'' : return 239;
  144.     case 'X' : return 207;
  145. #else
  146.     case 'C' : return '╟';
  147.     case 'c' : return 'τ';
  148.     case 'N' : return '╤';
  149.     case 'n' : return '±';
  150.     case 's' : return '▀';
  151.     case '!' : return 'í';
  152.     case '$' : return 'ó';
  153.     case '/' : return 'ó';
  154.     case 'l' : return 'ú';
  155.     case 'L' : return 'ú';
  156.     case 'Y' : return 'Ñ';
  157.     case '+' : return '▒';
  158.     case '?' : return '┐';
  159.     case '0' : return '░';
  160.     case '2' : return '▓';
  161.     case '<' : return '½';
  162.     case '>' : return '╗';
  163.     case 'D' : return '╨';
  164.     case 'd' : return '≡';
  165.     case 'P' : return '▐';
  166.     case 'p' : return '■';
  167.     case '|' : return 'ª';
  168.     case '&' : return 'º';
  169.     case '\\' : return '¼';
  170.     case '_' : return '»';
  171.     case '-' : return '¡';
  172.     case 'm' : return '╡';
  173.     case '#' : return '╢';
  174.     case '.' : return '╖';
  175.     case '*' : return '╖';
  176.     case ',' : return '╕';
  177.     case '\'' : return '┤';
  178.     case '1' : return '╣';
  179.     case '3' : return '│';
  180. #ifdef iso_latin_1
  181.     case 'X' : return 'ñ';
  182.     case '"' : return '¿';
  183.     case 'x' : return '╫';
  184.     case ':' : return '≈';
  185. #endif
  186. #ifdef dec_sup
  187.     case 'X' : return '¿'; /* ñ */
  188. #endif
  189. #endif
  190.     default: return c;
  191.   }
  192. }
  193.  
  194. uchar
  195. grave (ch)
  196.   uchar ch;
  197. {
  198.     switch (ch) {
  199. #ifdef pc_charset
  200.         case 'A' : return 183;
  201.         case 'E' : return 212;
  202.         case 'I' : return 222;
  203.         case 'O' : return 227;
  204.         case 'U' : return 235;
  205.         case 'a' : return 133;
  206.         case 'e' : return 138;
  207.         case 'i' : return 141;
  208.         case 'o' : return 149;
  209.         case 'u' : return 151;
  210. #else
  211.         case 'A' : return '└';
  212.         case 'E' : return '╚';
  213.         case 'I' : return '╠';
  214.         case 'O' : return '╥';
  215.         case 'U' : return '┘';
  216.         case 'a' : return 'α';
  217.         case 'e' : return 'Φ';
  218.         case 'i' : return '∞';
  219.         case 'o' : return '≥';
  220.         case 'u' : return '∙';
  221. #endif
  222.         default : return diacritic (ch);
  223.     }
  224. }
  225. uchar
  226. circumflex (ch)
  227.   uchar ch;
  228. {
  229.     switch (ch) {
  230. #ifdef pc_charset
  231.         case 'A' : return 182;
  232.         case 'E' : return 210;
  233.         case 'I' : return 215;
  234.         case 'O' : return 226;
  235.         case 'U' : return 234;
  236.         case 'a' : return 131;
  237.         case 'e' : return 136;
  238.         case 'i' : return 140;
  239.         case 'o' : return 147;
  240.         case 'u' : return 150;
  241. #else
  242.         case 'A' : return '┬';
  243.         case 'E' : return '╩';
  244.         case 'I' : return '╬';
  245.         case 'O' : return '╘';
  246.         case 'U' : return '█';
  247.         case 'a' : return 'Γ';
  248.         case 'e' : return 'Ω';
  249.         case 'i' : return 'ε';
  250.         case 'o' : return '⌠';
  251.         case 'u' : return '√';
  252. #endif
  253.         default : return diacritic (ch);
  254.     }
  255. }
  256. uchar
  257. acute (ch)
  258.   uchar ch;
  259. {
  260.     switch (ch) {
  261. #ifdef pc_charset
  262.         case 'A' : return 181;
  263.         case 'E' : return 144;
  264.         case 'I' : return 214;
  265.         case 'O' : return 224;
  266.         case 'U' : return 233;
  267.         case 'a' : return 160;
  268.         case 'e' : return 130;
  269.         case 'i' : return 161;
  270.         case 'o' : return 162;
  271.         case 'u' : return 163;
  272.         case 'Y' : return 237;
  273.         case 'y' : return 236;
  274.         case ' ' : return 239;
  275. #else
  276.         case 'A' : return '┴';
  277.         case 'E' : return '╔';
  278.         case 'I' : return '═';
  279.         case 'O' : return '╙';
  280.         case 'U' : return '┌';
  281.         case 'a' : return 'ß';
  282.         case 'e' : return 'Θ';
  283.         case 'i' : return 'φ';
  284.         case 'o' : return '≤';
  285.         case 'u' : return '·';
  286.         case ' ' : return '┤';
  287. #ifdef iso_latin_1
  288.         case 'Y' : return '▌';
  289.         case 'y' : return '²';
  290. #endif
  291. #endif
  292.         default : return diacritic (ch);
  293.     }
  294. }
  295. uchar
  296. diaeresis (ch)
  297.   uchar ch;
  298. {
  299.     switch (ch) {
  300. #ifdef pc_charset
  301.         case 'A' : return 142;
  302.         case 'E' : return 211;
  303.         case 'I' : return 216;
  304.         case 'O' : return 153;
  305.         case 'U' : return 154;
  306.         case 'a' : return 132;
  307.         case 'e' : return 137;
  308.         case 'i' : return 139;
  309.         case 'o' : return 148;
  310.         case 'u' : return 129;
  311.         case 'y' : return 152;
  312.         case ' ' : return 249;
  313. #else
  314.         case 'A' : return '─';
  315.         case 'E' : return '╦';
  316.         case 'I' : return '╧';
  317.         case 'O' : return '╓';
  318.         case 'U' : return '▄';
  319.         case 'a' : return 'Σ';
  320.         case 'e' : return 'δ';
  321.         case 'i' : return '∩';
  322.         case 'o' : return '÷';
  323.         case 'u' : return 'ⁿ';
  324. #ifdef iso_latin_1
  325.         case ' ' : return '¿';
  326.         case 'y' : return '\377'; /* ' ' aborts sun compiler */
  327. #endif
  328. #ifdef dec_sup
  329.         case 'Y' : return '▌'; /* capital   */
  330.         case 'y' : return '²'; /*   */
  331. #endif
  332. #endif
  333.         default : return diacritic (ch);
  334.     }
  335. }
  336. uchar
  337. tilde (ch)
  338.   uchar ch;
  339. {
  340.     switch (ch) {
  341. #ifdef pc_charset
  342.         case 'A' : return 199;
  343.         case 'O' : return 229;
  344.         case 'a' : return 198;
  345.         case 'o' : return 228;
  346. #else
  347.         case 'A' : return '├';
  348.         case 'O' : return '╒';
  349.         case 'a' : return 'π';
  350.         case 'o' : return '⌡';
  351. #ifdef dec_sup
  352.         case 'E' : return '╫'; /* OE */
  353.         case 'e' : return '≈'; /* oe */
  354. #endif
  355. #endif
  356.         default : return diacritic (ch);
  357.     }
  358. }
  359. uchar
  360. angstrom (ch)
  361.   uchar ch;
  362. {
  363.     switch (ch) {
  364. #ifdef pc_charset
  365.         case 'A' : return 143;
  366.         case 'E' : return 146;
  367.         case 'O' : return 157;
  368.         case 'a' : return 134;
  369.         case 'e' : return 145;
  370.         case 'o' : return 155;
  371.         case 'R' :
  372.         case 'r' : return 169;
  373.         case 'C' :
  374.         case 'c' : return 184;
  375. #else
  376.         case 'A' : return '┼';
  377.         case 'E' : return '╞';
  378.         case 'O' : return '╪';
  379.         case 'a' : return 'σ';
  380.         case 'e' : return 'µ';
  381.         case 'o' : return '°';
  382. #endif
  383.         default : return diacritic (ch);
  384.     }
  385. }
  386.  
  387. /*  ==================================================================    *
  388.  *        key and function key -> command mapping            *
  389.  *  ==================================================================    */
  390.  
  391. /* The mapping between input codes and functions */
  392.  
  393. #ifdef unix
  394. #define NULLcmd BAD
  395. #define BSPcmd MLF
  396. #endif
  397. #ifdef msdos
  398. #define NULLcmd FUNKEY    /* since FUNcmd is 0 */
  399. #define BSPcmd DPC
  400. #endif
  401. #ifdef vms
  402. #define NULLcmd ESCAPE
  403. #define BSPcmd MLF
  404. #endif
  405.  
  406. void (* key_map [256]) () =
  407. {    /* characters to functions map */
  408.    /* 000-017 */ NULLcmd, MPW, DCC, PD, MRT, MUP, MNW, GOTO,
  409.          BSPcmd, S, S, DLN, HOP, SNL, RS, LIB,
  410.    /* 020-037 */ PT, HOP, PU, MLF, DNW, DT, CTRl, SU,
  411.          MDN, YA, SD, ESCAPE, CANCEL, MARK, DPW, BAD,
  412.    /* 040-057 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  413.    /* 060-077 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  414.    /* 100-117 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  415.    /* 120-137 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  416.    /* 140-157 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  417.    /* 160-177 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, DPC,
  418. #ifdef msdos
  419.    /* 200-217 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  420.    /* 220-237 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  421. #else
  422.    /* 200-217 */ FUNKEY, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  423.    /* 220-237 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  424. #endif
  425.    /* 240-257 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  426.    /* 260-277 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  427.    /* 300-317 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  428.    /* 320-337 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  429.    /* 340-357 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  430.    /* 360-377 */ S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
  431. };
  432.  
  433. void (* ws_key_map [32]) () =
  434. {    /* characters to functions map */
  435.    /* 000-017 */ NULLcmd, MPW, JUS, PD, MRT, MUP, MNW, DCC,
  436.          MLF, S, S, ctrlK, RS, SNL, LIB, ctrlO,
  437.    /* 020-037 */ CTRl, ctrlQ, PU, MLF, DNW, BAD, TOGINS, SU,
  438.          MDN, DLINE, SD, ESCAPE, CANCEL, BAD, BAD, BAD,
  439. };
  440.  
  441. /*
  442. function keys deliver NUL and the following codes:
  443. Block1: RGISOQHKPM
  444. Block2: GHIKMOPQRS    Pos1 Up PgUp Left Center Right End Down PdDn Ins
  445. Cntrl:    st <-/->
  446. Cntrl:    wu Pos1/End
  447.     Σv PgUp / PgDn    <- for MSDOS: first char is ä (a-with-")
  448. F1-F10: ;<=>?@ABCD
  449. shift:    TUVWXYZ[\]
  450. cntrl:    ^_`abcdefg
  451. alt:    hijklmnopq
  452. */
  453.  
  454. void
  455. HELPF ()
  456. { status_msg ("       F2 write  F3 edit  F6 \357  F7 \371  F8 search     F9 next       F10 hop"); }
  457. void
  458. HELPS ()
  459. { status_msg ("shift- F2 write!          F6 `  F7 ~  F8 search rev F9 next       F10 hop"); }
  460. void
  461. HELPC ()
  462. { status_msg ("cntrl- F2 exit   F3 view  F6 ^  F7 \370  F8 search nxt F9 cycle lns  F10 hop"); }
  463. void
  464. HELPA ()
  465. { status_msg ("alt-   F2 write buffer                F8 search rev F9 switch lns F10 hop"); }
  466.  
  467. void (* pc_key_map [256]) () =
  468. {    /* function characters to functions map */
  469. /* The codes for F1..F10 start at the entry HELPF, shifted at HELPS etc. */
  470.    /* 000-017 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  471.    /* 020-037 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  472.    /* 040-057 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  473.    /* 060-077 */ I, I, I, I, I, I, I, I, I, I, I, HELPF, WT, EDIT, I, I,
  474.    /* 100-117 */ (voidfunc) acute, (voidfunc) diaeresis, SFW, RS, 
  475.          GOTO, I, I, MARK, MUP, PU, I, MLF, HOP, MRT, I, YA,
  476.    /* 120-137 */ MDN, PD, PT, DCC, 
  477.          HELPS, WTU, I, I, I, (voidfunc) grave, (voidfunc) tilde, SRV, 
  478.          RS, GOTO, HELPC, EXED,
  479.    /* 140-157 */ VIEW, I, I, (voidfunc) circumflex, 
  480.          (voidfunc) angstrom, RS, LNCI, GOTO, 
  481.          HELPA, WB, I, I, I, I, I, SRV,
  482.    /* 160-177 */ LNSW, GOTO, I, MPW, MNW, DT, SD, HOP, I, I, I, I, I, I, I, I,
  483.    /* 200-217 */ I, I, I, I, SU, I, I, I, I, I, I, I, I, MUP, I, HOP,
  484.    /* 220-237 */ I, MDN, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  485.    /* 240-257 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  486.    /* 260-277 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  487.    /* 300-317 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  488.    /* 320-337 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  489.    /* 340-357 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
  490.    /* 360-377 */ I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I
  491. };
  492.  
  493. #ifndef msdos
  494.  
  495. /* The mapping between function key sequences and functions */
  496.  
  497. struct {
  498.     char * fk;
  499.     void (* fp) ();
  500. } keycode [] =
  501. {    /* Escape-key sequences of function keys */
  502.     /* VT100 and SUN */
  503.     {"\033[A",    MUP},    /* move cursor up    */
  504.     {"\033[B",    MDN},    /* more cursor down    */
  505.     {"\033[C",    MRT},    /* more cursor right    */
  506.     {"\033[D",    MLF},    /* more cursor left    */
  507.     /* SUN raw keycodes */
  508.     {"\033[215z",    MUP},    /* move cursor up    */
  509.     {"\033[221z",    MDN},    /* more cursor down    */
  510.     {"\033[219z",    MRT},    /* more cursor right    */
  511.     {"\033[217z",    MLF},    /* more cursor left    */
  512.     /* VT100 */
  513.     {"\033[6~",    PD},    /* Next Screen    */
  514.     {"\033[5~",    PU},    /* Prev Screen    */
  515.     {"\033[4~",    MARK},    /* Select    */
  516.     {"\033[3~",    DT},    /* Remove    */
  517.     {"\033[2~",    PT},    /* Insert Here    */
  518.     {"\033[1~",    SFW},    /* Find        */
  519.     {"\033[29~",    YA},    /* Do        */
  520.     {"\033[28~",    HELP},    /* Help        */
  521.     {"\033[17~",    (voidfunc) diaeresis}, /* F6    */
  522.     {"\033[18~",    (voidfunc) diaeresis}, /* F7    */
  523.     {"\033[19~",    SFW},    /* F8    */
  524.     {"\033[20~",    RS},    /* F9    */
  525.     {"\033[21~",    I},    /* F10    */
  526.     {"\033[23~",    I},    /* F11    */
  527.     {"\033[24~",    I},    /* F12    */
  528.     {"\033[25~",    I},    /* F13    */
  529.     {"\033[26~",    I},    /* F14    */
  530.     {"\033[31~",    I},    /* F17    */
  531.     {"\033[32~",    I},    /* F18    */
  532.     {"\033[33~",    I},    /* F19    */
  533.     {"\033[34~",    I},    /* F20    */
  534.     {"\033OP",    HOP},    /* PF1    */
  535.     {"\033OQ",    SU},    /* PF2    */
  536.     {"\033OR",    SD},    /* PF3    */
  537.     {"\033OS",    I},    /* PF4    */
  538.     /* SUN */
  539.     {"\033[208z",    (voidfunc) grave},    /* R1 */
  540.     {"\033[209z",    (voidfunc) circumflex},    /* R2 */
  541.     {"\033[210z",    (voidfunc) acute},    /* R3 */
  542.     {"\033[211z",    (voidfunc) diaeresis},    /* R4 */
  543.     {"\033[212z",    (voidfunc) tilde},    /* R5 */
  544.     {"\033[213z",    (voidfunc) angstrom},    /* R6 */
  545.     {"\033[214z",    SU},    /* R7    */
  546.     {"\033[216z",    PU},    /* R9    */
  547.     {"\033[218z",    HOP},    /* R11    */
  548.     {"\033[220z",    SD},    /* R13    */
  549.     {"\033[222z",    PD},    /* R15    */
  550.     {"\033[254z",    GOMA},    /* - */
  551.     {"\033[253z",    MARK},    /* + */
  552.     {"\033[250z",    YA},    /* Enter */
  553.     {"\033[249z",    DT},    /* Del */
  554.     {"\033[247z",    PT},    /* Ins */
  555.     {"\033[2z",    PT},    /* Ins (NeWS) */
  556.     {"\033[192z",    MARK},    /* Stop */
  557.     {"\033[193z",    I},    /* Again */
  558.     {"\033[194z",    FS},    /* Props */
  559.     {"\033[195z",    I},    /* Undo */
  560.     {"\033[197z",    YA},    /* Copy */
  561.     {"\033[199z",    PT},    /* Paste */
  562.     {"\033[200z",    RS},    /* Find */
  563.     {"\033[201z",    DT},    /* Cut */
  564.     {"\033[196z",    HELP},    /* Help */
  565.     {"\033[225z",    WT},    /* F2 */
  566.     {"\033[226z",    EDIT},    /* F3 */
  567.     {"\033[227z",    I},    /* F4 */
  568.     {"\033[228z",    I},    /* F5 */
  569.     {"\033[229z",    PU},    /* F6 */
  570.     {"\033[230z",    PD},    /* F7 */
  571.     {"\033[231z",    SFW},    /* F8 */
  572.     {"\033[232z",    RS},    /* F9 */
  573.     {"\033[233z",    I},    /* F10 */
  574.     {"\033[234z",    I},    /* F11 */
  575.     {"\033[235z",    I},    /* F12 */
  576.     /* Iris */
  577.     {"\033[209q",    MARK},    /* Print Screen */
  578.     {"\033[213q",    YA},    /* Scroll Lock */
  579. /*    {"\033[217q",    I}, */    /* Pause */
  580.     {"\033[139q",    PT},    /* Insert, Ins */
  581.     {"\033[P",    DT},    /* Del */
  582.     {"\033[H",    SU},    /* Home */
  583.     {"\033[150q",    PU},    /* PgUp */
  584.     {"\033[146q",    SD},    /* End */
  585.     {"\033[154q",    PD},    /* PgDn */
  586.     {"\033[000q",    HOP},    /* 5 */
  587.     {"\033[001q",    HELP},    /* F1 */
  588.     {"\033[002q",    WT},    /* F2 */
  589.     {"\033[005q",    I},    /* F5 */
  590.     {"\033[006q",    I},    /* F6 */
  591.     {"\033[007q",    I},    /* F7 */
  592.     {"\033[008q",    SFW},    /* F8 */
  593.     {"\033[009q",    RS},    /* F9 */
  594.     {"\033[022q",    (voidfunc) grave},    /* Shift-F10 */
  595.     {"\033[023q",    (voidfunc) circumflex},    /* Shift-F11 */
  596.     {"\033[024q",    (voidfunc) acute},    /* Shift-F12 */
  597.     {"\033[010q",    (voidfunc) diaeresis},    /* F10 */
  598.     {"\033[011q",    (voidfunc) tilde},    /* F11 */
  599.     {"\033[012q",    (voidfunc) angstrom},    /* F12 */
  600.     /* VT100 emulator at IBM-PC */
  601.     {"\033M",    PU},    /* Pg Up */
  602.     {"\033D",    PD},    /* Pg Dn */
  603. /*    {"\033[H",    SU}, */    /* Home    , same at Iris */
  604.     {"\033[24;1H",    SD},    /* End    */
  605.     {"\0331",    HOP},    /* Ins    */
  606.         /* cursor keys and F1-4 same as VT100 */
  607.     /* crttool */
  608.     {"\033m",    DIRECT},    /* direct cursor address */
  609.     NIL_PTR
  610. };
  611.  
  612. #define MAXCODELEN 7 /* max. length of function key sequence to be detected, 
  613.             depending on the keycode table => used in mined1.c */
  614.  
  615. #endif
  616.  
  617. /*  ==================================================================    *
  618.  *                End                    *
  619.  *  ==================================================================    */
  620.